/*
 *  Лицензия MIT
 * 
 *  Copyright 2011 Salnikov Aleksey.
 * 
 *  Данная лицензия разрешает, безвозмездно, лицам, получившим копию данного программного обеспечения
 *  и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"),
 *  использовать Программное Обеспечение без ограничений, включая неограниченное право
 *  на использование, копирование, изменение, объединение, публикацию, распространение,
 *  сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам,
 *  которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
 * 
 *  Вышеупомянутый копирайт и данные условия должны быть включены во все копии или значимые
 *  части данного Программного Обеспечения.
 * 
 *  ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ЛЮБОГО ВИДА ГАРАНТИЙ,
 *  ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ,
 *  СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ
 *  НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ
 *  ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ
 *  С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
 *  ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
 */

package look.elements;

import CommonTools.Actions;
import CommonTools.DesignTools;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**
 * Класс окна для настройки автоудаления
 *
 * @author Salnikov Aleksey
 */
public class AutoDeleteSettings extends JDialog
{
    private JLabel periodL;
    private JTextField periodF;
    private JButton saveB;
    private static int MAX_LENGTH = 3;

    public AutoDeleteSettings(JFrame frame)
    {
        super(frame, "Настройки автоудаления", true);

        /****************************************************
         * Инициализируем компоненты
         ***************************************************/
        periodL = new JLabel("Удалять заявки старше (дней):");
        periodF = new JTextField(Actions.getAutoDeletePeriod());
        saveB = new JButton("Сохранить");

        /****************************************************
         * Размещаем компоненты
         ***************************************************/
        this.setLayout(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.anchor = gbc.NORTHWEST;
        gbc.fill = gbc.NONE;

        gbc.insets = new Insets(12,10,0,5);
        this.add(periodL, gbc);

        gbc.gridx = 1;
        gbc.ipadx = 150;
        gbc.insets = new Insets(7,0,0,5);
        this.add(periodF, gbc);

        gbc.gridx = 2;
        gbc.ipadx = 50;
        gbc.insets = new Insets(7,0,10,10);
        this.add(saveB, gbc);

        /***************************************************
         * Привязываем события
         **************************************************/

        saveB.addActionListener(new ActionListener()
             {
                public void actionPerformed(ActionEvent e)
                 {
                    save();
                 }
             });

        periodF.addKeyListener(new KeyAdapter()
        {
            @Override
            public void keyReleased(KeyEvent d)
            {
                if (periodF.getText().length() > MAX_LENGTH)
                    periodF.setForeground(Color.red);
                else
                    periodF.setForeground(Color.BLACK);
            }
        });

        this.setResizable(false);
        this.setSize(new Dimension(500, 70));

        DesignTools.centeredWindow(this);
        this.setVisible(true);
    }

    private void save()
    {
        if (periodF.getForeground().equals(Color.black))
        {
            try
            {
                int i = Integer.parseInt(periodF.getText());
                Actions.setAutoDeletePeriod(Integer.toString(i));
                this.dispose();
            }
            catch (Exception e) {
                DesignTools.showMessage("Ошибка", "Изменения не сохранены.\nЧисло должно быть целым. Если вы введете отрицательное число," +
                        "или 0, то автоудаление происходить не будет", true);
            }
        }
        else
            DesignTools.showMessage("Ошибка", "Слишком длинное значение", false);
    }
}
